package conf

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"tcpChat/ziface"
)

type GlobalObj struct {
	TcpServer ziface.IServer //全局的Server对象
	Host      string         //当前服务器主机IP
	Port      int            //服务器端口
	Name      string         // 服务器名称
	Version   string         //版本

	WorkerPoolSize   uint32 //最大工作池数量
	MaxWorkerTaskLen uint32 //业务工作Worker对应负责的任务队列最大任务存储数量
	MaxPacketSize    uint32 //数据包的最大值
	MaxConn          int    //服务器的最大连接数
	MaxMsgChanLen    uint32 //最大缓冲管道信息数据
}

//全局变量
var GlobalObject *GlobalObj

func (g *GlobalObj) Reload() {
	data, err := ioutil.ReadFile("conf/config.json")
	if len(data) > 0 {
		err = json.Unmarshal(data, GlobalObject)

		if err != nil {
			fmt.Println(err)
			panic(err)
		}
	}
}

func init() {
	// 默认参数
	GlobalObject = &GlobalObj{
		Name:             "ZINX SERVER",
		Version:          "0.0.1",
		Host:             "0.0.0.0",
		Port:             8999,
		WorkerPoolSize:   10,
		MaxWorkerTaskLen: 1024,
		MaxPacketSize:    4096,
		MaxConn:          12000,
		MaxMsgChanLen:    4096,
	}

	//配置文件加载
	GlobalObject.Reload()
}
